#include "queue.h"
#include "Colas.h"
#include "FreeRTOS.h"
#include "LCD.h"
#include "FreeRTOS.h"

/*
 * ProcesamientoTest.c
 *
 *  Created on: May 21, 2011
 *      Author: LinaAcevedo
 */
void TestDistribucionDatos()
{
	DatoEditado datoEditado,datoEditado2;
	datoEditado.datoMetano = 1000;
	datoEditado.datoTemperatura = 2000;



	xQueueSend(colaDistribucion, &datoEditado, 1000);
	vTaskDelay(1000);
	xQueueReceive(colaAnalisis, &datoEditado2, 1000);

	LCD_WR_TEMP(datoEditado2.datoTemperatura);
	LCD_WR_CH3(datoEditado2.datoMetano);

}
void TestDistribucionDatosInterfaz()
{
	DatoEditado datoEditado;
	DatoInterfaz datoInterfaz;
	datoEditado.datoMetano = 1500;
	datoEditado.datoTemperatura = 2000;

    char no[2]="NO";


	xQueueSend(colaDistribucion, &datoEditado, 1000);
	vTaskDelay(1000);
	xQueueReceive(colaInterfaz, &datoInterfaz, 1000);


	if (datoInterfaz.datoMetano==datoEditado.datoMetano && datoInterfaz.datoTemperatura==datoEditado.datoTemperatura)
	{
		char cadena[2]="OK";
		LCD_write_char_array(cadena,2);

	}
	else


	LCD_write_char_array(no,2);

}

void TestDistribucionDatosAlmacenamiento()
{

	DatoAlmacenamiento datoAlmacenamiento;
	DatoEditado datoDistribucion;
	char zona;
	char no[2]="NO";
	char cadena[2]= "OK";
	datoDistribucion.datoMetano = 1500;
	datoDistribucion.datoTemperatura = 2880;


	xQueueSend(colaDistribucion, &datoDistribucion, 1000);

	vTaskDelay(1000);
	xQueueReceive(colaInterfaz, &datoAlmacenamiento, 1000);

	if (datoAlmacenamiento.datoMetano==datoDistribucion.datoMetano && datoAlmacenamiento.datoTemperatura==datoDistribucion.datoTemperatura )
	{
		LCD_write_char_array(cadena,2);
	}
	else

	LCD_write_char_array(no,2);
}
void TestAnalisis()
{
	DatoEditado datoEditado;
	char alarma;
	datoEditado.datoMetano = 500;
	datoEditado.datoTemperatura = 1200;


	xQueueSend(colaAnalisis, &datoEditado, 1000);
	vTaskDelay(1000);
	xQueueReceive(colaAlarma, &alarma, 1000);

	LCD_write_char('0'+alarma);
	LCD_goto_x_y(0,1);

	datoEditado.datoMetano = 1500;
	datoEditado.datoTemperatura = 2880;


	xQueueSend(colaAnalisis, &datoEditado, 1000);
	vTaskDelay(1000);
	xQueueReceive(colaAlarma, &alarma, 1000);

	LCD_write_char('0'+alarma);

}
void TestLecturaDato()
{
	DatoADC datoADC;
	long tiempo;
	char hora, minutos,segundos;

while(1)
{


		xQueueReceive(colaEditorEscala, &datoADC, 1000);

		LCD_WR_TEMP(datoADC.datoTemperatura);

		LCD_WR_CH3(datoADC.datoMetano);

		tiempo = (AT91C_BASE_RTTC->RTTC_RTVR);
					segundos = tiempo % 60;
					tiempo /= 60;
					minutos = tiempo % 60;
					tiempo /= 60;
					hora = (char) (tiempo & 0xFF);

		LCD_WR_HORA(hora,minutos,segundos);
}
}
void TestEdicionEscala(){
	DatoADC datoADC;
	DatoEditado datoEditado;
	long tiempo;
	char hora, minutos,segundos;

	datoADC.datoMetano = 1011;
	datoADC.datoTemperatura = 719;

	// Se envia el dato a la cola de almacenamiento
	xQueueSend(colaEditorEscala, &datoADC , 1000);

	vTaskDelay(1000);

	xQueueReceive(colaDistribucion, &datoEditado, 1000);

	LCD_WR_CH3(datoEditado.datoMetano);

	LCD_WR_TEMP(datoEditado.datoTemperatura);





}

